import axios from '@ohos/axios';

export class book{
  id:string =''
  author:string=''
  img:string=''
  name:string=''
  content:string=''
  constructor(id: string, name:string,author: string,img:string,content:string) {
    this.author=author
    this.content=content
    this.name = name
    this.id = id
    this.img = img
  }
}
export class data {
  async getBooks(): Promise<book[]> {
    try {
      const response = await axios({
        method: 'post',
        url: 'http://39.108.217.238:80/Books',
        data: JSON.stringify(data), // 将数据转换为 JSON 字符串
        headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
      });

      // 处理响应
      const responseData = response.data; // 获取响应数据

      // 检查服务器返回的数据是否包含 'books' 属性，并且它是一个数组
      if (Array.isArray(responseData.books)) {
        // 将 'books' 中的每个对象转换为 book 对象
        const books: book[] = responseData.books.map(item => ({
          id: item.book_id,
          img: item.Url,
          name: item.book_name,
          content: item.content,
          author: item.author
        }));

        return books;
      } else {
        throw new Error('Invalid response format: books is not an array');
      }
    } catch (error) {
      // 处理错误
      console.error(error);
      throw error; // 抛出错误，以便调用者可以捕获
    }
  }
  history(id:string): Promise<book[]> {
    const data = { user_id:id }; // 替换为实际的 JSON 数据
    console.log(id)
    return axios({
      method: 'post',
      url: 'http://39.108.217.238:80/historyBooks',
      data: JSON.stringify(data), // 将数据转换为 JSON 字符串
      headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
    }).then(response => {
      // 处理响应数据
      const responseData = response.data; // 获取响应数据
      console.log(responseData.code); // 打印响应数据
      const books: book[] = responseData.books.map(item => ({
        id: item.book_id,
        img: item.Url,
        name: item.book_name,
        content:item.content,
        author:item.author
      }));
      books.forEach(book => {
        console.log(book.id)
      });
      return books;
    }).catch(error => {
      // 处理错误
      console.error(error);
      throw error; // 抛出错误，以便调用者可以捕获
    });
  }
  myBooks(id:string): Promise<book[]> {
    const data = { user_id: id }; // 替换为实际的 JSON 数据

    return axios({
      method: 'post',
      url: 'http://39.108.217.238:80/myBooks',
      data: JSON.stringify(data), // 将数据转换为 JSON 字符串
      headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
    }).then(response => {
      // 处理响应数据
      const responseData = response.data; // 获取响应数据
      console.log(responseData.code); // 打印响应数据

      // 检查服务器返回的数据是否包含 'arr' 属性，并且它是一个数组
      // 将 'arr' 中的每个对象转换为 book 对象
      const books: book[] = responseData.books.map(item => ({
        id: item.book_id,
        img: item.Url,
        name: item.book_name,
        content:item.content,
        author:item.author
      }));
      return books;
    }).catch(error => {
      // 处理错误
      console.error(error);
      throw error; // 抛出错误，以便调用者可以捕获
    });
  }
  search(id:string): Promise<book[]> {
    const data = { key:id }; // 替换为实际的 JSON 数据

    return axios({
      method: 'post',
      url: 'http://39.108.217.238:80/searchBook',
      data: JSON.stringify(data), // 将数据转换为 JSON 字符串
      headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
    }).then(response => {
      // 处理响应数据
      const responseData = response.data; // 获取响应数据
      console.log(responseData.code); // 打印响应数据
      const books: book[] = responseData.books.map(item => ({
        id: item.book_id,
        img: item.Url,
        name: item.book_name,
        content:item.content,
        author:item.author
      }));
      books.forEach(book => {
        console.log(book.id)
      });
      return books;
    }).catch(error => {
      // 处理错误
      console.error(error);
      throw error; // 抛出错误，以便调用者可以捕获
    });
  }

  addbook(userid:string,bookid:string):Promise<string>{
    const data = { user_id:userid,book_id:bookid }; // 替换为实际的 JSON 数据
    return axios({
      method: 'post',
      url: 'http://39.108.217.238/addBookToUser',
      data: JSON.stringify(data), // 将数据转换为 JSON 字符串
      headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
    }).then(response => {
      // 处理响应数据
      const responseData = response.data; // 获取响应数据
      let x =  JSON.parse(JSON.stringify(responseData)).code
      return x
    }).catch(error => {
      // 处理错误
      console.error(error);
    });
  }
  addhb(userid:string,bookid:string){
    const data = { user_id:userid,book_id:bookid }; // 替换为实际的 JSON 数据
    axios({
      method: 'post',
      url: 'http://39.108.217.238/oneBook',
      data: JSON.stringify(data), // 将数据转换为 JSON 字符串
      headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
    }).then(response => {
      // 处理响应数据
      const responseData = response.data; // 获取响应数据
      let x =  JSON.parse(JSON.stringify(responseData)).code
      return x
    }).catch(error => {
      // 处理错误
      console.error(error);
    });
  }
  delbook(userid:string,bookid:string):number{
    const data = { user_id:userid,book_id:bookid}; // 替换为实际的 JSON 数据

    axios({
      method: 'post',
      url: 'http://39.108.217.238/delBookFromUser',
      data: JSON.stringify(data), // 将数据转换为 JSON 字符串
      headers: { 'Content-Type': 'application/json' } // 设置请求头为 JSON 格式
    }).then(response => {
      // 处理响应数据
      const responseData = response.data; // 获取响应数据
      return responseData.code
    }).catch(error => {
      // 处理错误
      console.error(error);
    });
    return 500
  }
}

